﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QLLopHoc.DoiTuongDuLieu;
using QLLopHoc.XuLyDuLieu;
using QLLopHoc.KetNoiDatabase;

namespace QLLopHoc
{
    public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();
        }

        private void frmMain_Load(object sender, EventArgs e)
        {
            List<DTLopHoc> dsLH = XLLopHoc.LayDSLopHoc();
            cmbDSLop.Items.AddRange(dsLH.ToArray());
            cmbDSLop.DisplayMember = "TenLopHoc";
            if (dsLH.Count > 0)
            {
                cmbDSLop.SelectedIndex = 0;
            }
        }

        private void cmbDSLop_SelectedIndexChanged(object sender, EventArgs e)
        {
            int idx = cmbDSLop.SelectedIndex;
            if (idx == -1)
                return;
            DTLopHoc lh = (DTLopHoc)cmbDSLop.Items[idx];
            DTGiangVien gv = XLGiangVien.LayGVTuMS(lh.MaGiangVien);
            //dien ten giang vien
            List<DTSinhVien> dssv = XLLopHoc.LayDSMaSVCuaLH(lh.TenLopHoc);
            //dien danh sach sinh vien vao list view
            lvDSSinhVien.Items.Clear();
            ListViewItem lvi = null;
            int stt = 0;
            foreach (DTSinhVien sv in dssv)
            {
                stt++;
                lvi = new ListViewItem(stt.ToString());
                lvi.SubItems.Add(sv.MSSV);
                lvi.SubItems.Add(sv.HoTen);
                lvi.Tag = sv;
                lvDSSinhVien.Items.Add(lvi);
            }
        }
        private void btnThemSVLH_Click(object sender, EventArgs e)
        {
            object obj = cmbDSLop.SelectedItem; 
            if (obj == null) 
            { 
                MessageBox.Show("Chưa chọn lớp học!"); 
                return; 
            } 
            DTLopHoc lh = (DTLopHoc)obj; 
            frmThemSVChoLH frm = new frmThemSVChoLH(lh.TenLopHoc); 
            if (frm.ShowDialog() == DialogResult.OK) 
            { 
                List<DTSinhVien> dssv = frm.DSSV; 
                string kq = ""; 
                int dem = 0; 
                ListViewItem lvi = null; 
                int stt = lvDSSinhVien.Items.Count; 
                foreach (DTSinhVien sv in dssv) 
                { 
                    if (XLLopHoc.ThemSVVaoLH(sv.MSSV, lh.TenLopHoc) == "") 
                    { 
                        kq += "  +" + sv.MSSV + Environment.NewLine; 
                        ++dem; 
                        ++stt; 
                        lvi = new ListViewItem(stt.ToString()); 
                        lvi.SubItems.Add(sv.MSSV); 
                        lvi.SubItems.Add(sv.HoTen); 
                        lvi.Tag = sv; 
                        lvDSSinhVien.Items.Add(lvi); 
                    } 
                }
                MessageBox.Show("Đã thêm thành công " + dem.ToString() + " sinh viên vào lớp học." + 
                    Environment.NewLine + kq, "Thông báo"); 
            } 
        }

        private void frmThemLH_Click(object sender, EventArgs e)
        {
            frmThemLH frm = new frmThemLH();
            if (frm.ShowDialog() == DialogResult.OK)
            {
                DTLopHoc lh = frm.LopHoc;
                string strError = XLLopHoc.ThemLopHoc(lh);
                if (strError == "")
                {
                    MessageBox.Show("Đã thêm lớp học thành công!");
                    cmbDSLop.Items.Add(lh);
                    return;
                }
                MessageBox.Show("Error: " + Environment.NewLine + strError);
            }
        }

        private void btnCapNhatGVLH_Click(object sender, EventArgs e)
        {
            object obj = cmbDSLop.SelectedItem;
            if (obj == null)
            {
                MessageBox.Show("Chưa chọn lớp học!");
                return;
            }
            frmCapNhatGV frm = new frmCapNhatGV((DTLopHoc)obj);
            if (frm.ShowDialog() == DialogResult.OK)
            {
                DTLopHoc lh = frm.LopHoc;
                string strError = XLLopHoc.CapNhatLH(lh);
                if (strError == "")
                {
                    MessageBox.Show("Đã cập nhật lớp học thành công!");
                    DTGiangVien gv = XLGiangVien.LayGVTuMS(lh.MaGiangVien);
                    lbGVLH.Text = gv.HoTen;
                    return;
                }
                MessageBox.Show("Error: " + Environment.NewLine + strError);
            }
        }

        private void btnXoaLH_Click(object sender, EventArgs e)
        {
            object obj = cmbDSLop.SelectedItem; 
            if (obj == null) 
            { 
                MessageBox.Show("Chưa chọn lớp học!"); 
                return; 
            } 
            if(MessageBox.Show("Bạn thật sự muốn xóa lớp học?", "Confirm", 
MessageBoxButtons.YesNo) == DialogResult.No) 
            {
                return;
            }
            string strError = XLLopHoc.XoaLopHoc(((DTLopHoc)obj).TenLopHoc);
            if (strError == "")
            {
                MessageBox.Show("Đã xóa lớp học thành công!");
                cmbDSLop.Items.Remove(obj);
                if (cmbDSLop.Items.Count > 0)
                {
                    cmbDSLop.SelectedIndex = 0;
                }
            }
            else
            {
                MessageBox.Show(strError, "Error");
            }
        }

        private void btnXoaSVLH_Click(object sender, EventArgs e)
        {
            ListView.SelectedListViewItemCollection dsSelect = lvDSSinhVien.SelectedItems;
            if (dsSelect.Count == 0)
            {
                MessageBox.Show("Chưa chọn sinh viên!");
                return;
            }
            if (MessageBox.Show("Bạn thật sự muốn xóa các sinh viên đã chọn?", "Confirm",
MessageBoxButtons.YesNo) == DialogResult.No)
            {
                return;
            }
            string tenLH = ((DTLopHoc)cmbDSLop.SelectedItem).TenLopHoc;
            string kq = "";
            int dem = 0;
            DTSinhVien sv = null;
            foreach (ListViewItem lvi in dsSelect)
            {
                sv = (DTSinhVien)lvi.Tag;
                if (XLLopHoc.XoaSVCuaLH(sv.MSSV, tenLH) == "")
                {
                    dem++;
                    kq += "    +" + sv.MSSV + Environment.NewLine;
                    lvDSSinhVien.Items.Remove(lvi);
                }
            }
            MessageBox.Show("Đã xóa thành công " + dem.ToString() + " sinh viên của lớp học."
+ Environment.NewLine + kq, "Thông báo");
            ListViewItem lvitemp = null;
            for (int i = 0; i < lvDSSinhVien.Items.Count; ++i)
            {
                lvitemp = lvDSSinhVien.Items[i];
                lvitemp.Text = (i + 1).ToString();
            }
        }
        private void MenuItem_QLGV_Click(object sender, EventArgs e)
        {
            frmGiangVien frm = new frmGiangVien();
            frm.Show();
        }
        //phương thức xóa lớp học 
        
    }
}
